home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Shareware / IDimager Personal 4.2.0.3 / setup_IDimager_Personal_V4.exe / {app} / web / modules / albumtree.psc < prev    next >
Text File  |  2008-06-02  |  12KB  |  256 lines

  1. %code
  2. const
  3.   cIndentString = '   ';    // the trailing space is required for IE
  4.  
  5. var
  6.   AShowCounts: Boolean;
  7.  
  8.   function StringRepeat(AString: WideString; ARepeat: Integer): WideString;
  9.   var
  10.     i: Integer;
  11.   begin
  12.     result := toWideString('');
  13.     for i := 1 to ARepeat do
  14.       result := result + AString;
  15.   end;
  16.  
  17.   function DetermineScriptOnType (AType: Char): WideString;
  18.   begin
  19.     if AType = 'M' then
  20.       result := 'albumimages.psc'
  21.     else if AType = 'G' then
  22.       result := 'galleryimages.psc'
  23.     else if AType = 'C' then
  24.       result := 'collimages.psc';
  25.   end;
  26.  
  27.   function FormatResult (AGUID: String; AName: WideString; ACount: Integer; AType: Char);
  28.   begin
  29.     result := toWideString('');
  30.  
  31.     result := result + '<a href="javascript:getHTML(''%var:PageOffset/./modules/' + DetermineScriptOnType (AType) + ''', ''thumbs'', ''GUID=' + AGUID + ''');">';
  32.     if AShowCounts then
  33.       result := result + WideFormat ('%s [%d]', [AName, ACount])
  34.     else
  35.       result := result + AName;
  36.  
  37.     result := result + '</a>';
  38.   end;
  39.  
  40. var
  41.   AParentGUID: String;
  42.   ALevel: Integer;
  43.   AModels: TImageModelItems;
  44.   AModel: TImageModel;
  45.   AGalleries: TImageGalleries;
  46.   AGallery: TImageGallery;
  47.   AColls: TImageCollections;
  48.   AColl: TImageCollection;
  49.   ASubColls: TImageCollections;
  50.   ASubColl: TImageCollection;
  51.   i: Integer;
  52.   AExpand: Boolean;
  53. begin
  54.   result := toWideString('');
  55.  
  56.   AShowCounts := (Request.Params.Values['showCounts'] = 'y');
  57.  
  58.   AParentGUID := Trim(Request.Params.Values['GUID']);
  59.   if AParentGUID = '' then
  60.     AParentGUID := 'top';
  61.  
  62.   AExpand := Request.Params.Values['expand'] ='y';
  63.  
  64.   if not IsValidNumberString(Request.Params.Values['level'], False) then
  65.     ALevel := 0
  66.   else
  67.     ALevel := StrToInt(Request.Params.Values['level']);
  68.  
  69.   if AParentGUID = 'top' then
  70.   begin
  71.     AModels := TImageModelItems.Create (TImageModelItem, '');
  72.     Catalog.EnumModels (AModels, False, False, AShowCounts);
  73.  
  74.     for i := 0 to AModels.Count - 1 do
  75.     begin
  76.       AModel := AModels.Items[i].Model;
  77.  
  78.       result := result + '<div id="' + AModel.GUID + '">';
  79.       result := result + '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + AModel.GUID + ''', ''GUID=' + AModel.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel + 1) + ''');">' + 
  80.                          '   <img src="%var:PageOffset/images/expand.gif">' + 
  81.                          '</a> ' + FormatResult(AModel.GUID, AModel.ModelName, AModel.PhotoCount, 'M') + 
  82.                          '';
  83.  
  84.       result := result + '</div>';
  85.     end;
  86.  
  87.     AModels.Free;
  88.   end
  89.   else
  90.   begin
  91.     if ALevel = 1 then
  92.     begin
  93.       AModel := TImageModel.Create(nil);
  94.  
  95.       Catalog.EnumModel (AParentGUID, AModel, AShowCounts);
  96.  
  97.       if AExpand then
  98.         result := result + StringRepeat(cIndentString, ALevel - 1) + 
  99.                            '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + AParentGUID + ''', ''GUID=' + AParentGUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=n&level=' + IntToStr(ALevel) + ''');">' + 
  100.                            '   <img src="%var:PageOffset/images/collapse.gif">' + 
  101.                            '</a> ' + 
  102.                            FormatResult(AParentGUID, AModel.ModelName, AModel.PhotoCount, 'M') + 
  103.                            ''
  104.       else
  105.         result := result + StringRepeat(cIndentString, ALevel - 1) + 
  106.                            '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + AParentGUID + ''', ''GUID=' + AParentGUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel) + ''');">' + 
  107.                            '   <img src="%var:PageOffset/images/expand.gif">' + 
  108.                            '</a> ' + 
  109.                            FormatResult(AParentGUID, AModel.ModelName, AModel.PhotoCount, 'M') + 
  110.                            '';
  111.  
  112.       if AExpand then
  113.       begin
  114.         AGalleries := TImageGalleries.Create(TImageGallery, '');
  115.         AGalleries.Clear;
  116.         Catalog.EnumModelGalleries (AModel, AGalleries, AShowCounts);
  117.         for i := 0 to AGalleries.Count - 1 do
  118.         begin
  119.           AGallery := AGalleries.Items[i];
  120.  
  121.           result := result + '<div id="' + AGallery.GUID + '">';
  122.           result := result + StringRepeat(cIndentString, ALevel) + 
  123.                              iif (not Catalog.GalleryHasCollections (AGallery.GUID),
  124.                                 '',
  125.                                 '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + AGallery.GUID + ''', ''GUID=' + AGallery.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel + 1) + ''');">' + 
  126.                                 '   <img src="%var:PageOffset/images/expand.gif">' + 
  127.                                 '</a>'
  128.                                 ) +
  129.                              ' ' +
  130.                              FormatResult(AGallery.GUID, AGallery.GalleryName, AGallery.PhotoCount, 'G') + 
  131.                              '';
  132.  
  133.           result := result + '</div>';
  134.         end;
  135.         AGalleries.Free;
  136.       end;
  137.  
  138.       AModel.Free;
  139.     end
  140.     else if ALevel = 2 then
  141.     begin
  142.       AGallery := TImageGallery.Create(nil);
  143.       AGallery.GUID := AParentGUID;
  144.  
  145.       Catalog.EnumModelGallery (AGallery, AShowCounts);
  146.  
  147.       if AExpand then
  148.         result := result + StringRepeat(cIndentString, ALevel - 1) + 
  149.                            iif (not Catalog.GalleryHasCollections (AGallery.GUID),
  150.                                 '',
  151.                                 '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + AParentGUID + ''', ''GUID=' + AParentGUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=n&level=' + IntToStr(ALevel) + ''');">' + 
  152.                                 '   <img src="%var:PageOffset/images/collapse.gif">' + 
  153.                                 '</a>'
  154.                                 ) +
  155.                            ' ' +
  156.                            FormatResult(AParentGUID, AGallery.GalleryName, AGallery.PhotoCount, 'G') + 
  157.                            ''
  158.       else
  159.         result := result + StringRepeat(cIndentString, ALevel - 1) + 
  160.                            iif (not Catalog.GalleryHasCollections (AGallery.GUID),
  161.                                 '',
  162.                                 '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + AParentGUID + ''', ''GUID=' + AParentGUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel) + ''');">' + 
  163.                                 '   <img src="%var:PageOffset/images/expand.gif">' + 
  164.                                 '</a>'
  165.                                ) +
  166.                            ' ' +
  167.                            FormatResult(AParentGUID, AGallery.GalleryName, AGallery.PhotoCount, 'G') + 
  168.                            '';
  169.  
  170.       if AExpand then
  171.       begin
  172.         AColls := TImageCollections.Create(TImageCollection, '');
  173.         Catalog.EnumGalleryCollections (AGallery, AColls, AShowCounts);
  174.         for i := 0 to AColls.Count - 1 do
  175.         begin
  176.           AColl := AColls.Items[i];
  177.  
  178.           result := result + '<div id="' + AColl.GUID + '">';
  179.           result := result + StringRepeat(cIndentString, ALevel) + 
  180.                              iif (not Catalog.CollectionHasCollections (AColl.GUID),
  181.                                   '',
  182.                                   '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + AColl.GUID + ''', ''GUID=' + AColl.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel + 1) + ''');">' + 
  183.                                   '   <img src="%var:PageOffset/images/expand.gif">' + 
  184.                                   '</a>'
  185.                                   ) +
  186.                              ' ' +
  187.                              FormatResult(AColl.GUID, AColl.CollectionName, AColl.PhotoCount, 'C') + 
  188.                              '';
  189.  
  190.           result := result + '</div>';
  191.         end;
  192.         AColls.Free;
  193.       end;
  194.  
  195.       AGallery.Free;
  196.     end
  197.     else if ALevel >= 2 then
  198.     begin
  199.       AColl := TImageCollection.Create(nil);
  200.       AColl.GUID := AParentGUID;
  201.  
  202.       Catalog.EnumModelCollection (AColl, AShowCounts);
  203.  
  204.       if AExpand then
  205.         result := result + StringRepeat(cIndentString, ALevel - 1) + 
  206.                            iif (not Catalog.CollectionHasCollections (AColl.GUID),
  207.                                 '',
  208.                                 '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + AParentGUID + ''', ''GUID=' + AParentGUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=n&level=' + IntToStr(ALevel) + ''');">' + 
  209.                                 '   <img src="%var:PageOffset/images/collapse.gif">' + 
  210.                                 '</a>'
  211.                                 ) +
  212.                            ' ' +
  213.                            FormatResult(AParentGUID, AColl.CollectionName, AColl.PhotoCount, 'C') + 
  214.                            ''
  215.       else
  216.         result := result + StringRepeat(cIndentString, ALevel - 1) + 
  217.                            iif (not Catalog.CollectionHasCollections (AColl.GUID),
  218.                                 '',
  219.                                 '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + AParentGUID + ''', ''GUID=' + AParentGUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel) + ''');">' + 
  220.                                 '   <img src="%var:PageOffset/images/expand.gif">' + 
  221.                                 '</a>'
  222.                                 ) +
  223.                            ' ' +
  224.                            FormatResult(AParentGUID, AColl.CollectionName, AColl.PhotoCount, 'C') + 
  225.                            '';
  226.  
  227.       if AExpand then
  228.       begin
  229.         ASubColls := TImageCollections.Create(TImageCollection, '');
  230.         Catalog.EnumCollectionCollections (AColl, ASubColls, AShowCounts);
  231.         for i := 0 to ASubColls.Count - 1 do
  232.         begin
  233.           ASubColl := ASubColls.Items[i];
  234.  
  235.           result := result + '<div id="' + ASubColl.GUID + '">';
  236.           result := result + StringRepeat(cIndentString, ALevel) + 
  237.                              iif (not Catalog.CollectionHasCollections (ASubColl.GUID),
  238.                                  '',
  239.                                  '<a href="javascript:getHTML(''%var:PageOffset/./modules/albumtree.psc'', ''' + ASubColl.GUID + ''', ''GUID=' + ASubColl.GUID + '&showCounts=' + iif(AShowCounts, 'y', 'n') + '&expand=y&level=' + IntToStr(ALevel + 1) + ''');">' + 
  240.                                  '   <img src="%var:PageOffset/images/expand.gif">' + 
  241.                                  '</a>'
  242.                                  ) +
  243.                              ' ' +
  244.                              FormatResult(ASubColl.GUID, ASubColl.CollectionName, ASubColl.PhotoCount, 'C') + 
  245.                              '';
  246.  
  247.           result := result + '</div>';
  248.         end;
  249.         ASubColls.Free;
  250.       end;
  251.  
  252.       AColl.Free;
  253.     end
  254.   end;
  255. end;
  256. %/code